package com.liuyu.lottery.service.impl;

import com.liuyu.lottery.domain.BiTree;
import com.liuyu.lottery.service.BiTreeService;
import org.springframework.stereotype.Service;

import java.util.Scanner;

@Service
public class BiTreeServiceImpl implements BiTreeService {

    @Override
    public BiTree createBiTree() {
        char data;
        data = new Scanner(System.in).next().charAt(0);
        BiTree biTree = new BiTree();
        if (data == '#') {
            biTree = null;
        } else {
            biTree.setData(data);
            biTree.setLeftChild(createBiTree());
            biTree.setRightChild(createBiTree());
        }
        return biTree;
    }

    public void preOrder(BiTree biTree) {
        if (biTree != null) {
            System.out.print(biTree.getData());
            preOrder(biTree.getLeftChild());
            preOrder(biTree.getRightChild());
//            System.out.println();
        }
    }
    public void inOrder(BiTree biTree) {
        if (biTree != null) {
            inOrder(biTree.getLeftChild());
            System.out.print(biTree.getData());
            inOrder(biTree.getRightChild());
//            System.out.println();
        }
    }
    public void postOrder(BiTree biTree) {
        if (biTree != null) {
            postOrder(biTree.getLeftChild());
            postOrder(biTree.getRightChild());
            System.out.print(biTree.getData());
//            System.out.println();
        }
    }

    public static void main(String[] args) {
        BiTreeServiceImpl biTreeService = new BiTreeServiceImpl();
        BiTree biTree = biTreeService.createBiTree();
        biTreeService.preOrder(biTree);
        System.out.println();
        biTreeService.inOrder(biTree);
        System.out.println();
        biTreeService.postOrder(biTree);
    }
}
